<?php 

if (!$this->form) return;

$show = 0;
$elements = $this->form->getElements();
foreach ($elements as $element) {
	if ($element->getAttrib('class') == 'element_suggest') {
		$show = 1;
	}
}

if (!$show) {
	return;
}

?>

<style type="text/css" template='<?php echo basename(__FILE__); ?>'>
.suggest_result {
	text-align: left;
	position: absolute;
	width: 300px;
	height: 200px;
	overflow-y: scroll;
	overflow-x: hidden;
	background-color: white;
	border: 2px black solid;
	display: none;
}

.suggest_item:hover {
	cursor: pointer;
	background-color: #d6ffd6;
}

.element_suggest {
	width: 297px;
}
</style>



<script type='text/javascript' template='<?php echo basename(__FILE__); ?>'>
$(function() {
	var $suggests = $(".element_suggest");
	$suggests.each(function() {
		var $suggest = $(this);
		var $clone = $suggest.clone();

		// Скопированному полю устанавливаем name, у видимого поля отключаем автокомплит и убиваем name
		$clone.attr("name", $suggest.attr("name"));
		$suggest.removeAttr("name");
		$suggest.removeAttr("id")
		$suggest.attr("autocomplete", "off");

		// Скрываем скопированное поле
		$clone.hide();

		// Если у видимого поля есть аттрибут table_id, ставим его в value для скрытого поля
		var $tableId = $suggest.attr('table_id');
		if ($tableId) {
			$clone.attr("value", $tableId);
		}

		// Убираем класс для скрытого поля
		$clone.removeAttr("class");

		// Размещаем скрытый аттрибут после видимого
		$suggest.after($clone);

		// Создаем див, который будет включать результаты поиска и размещаем также после видимого элемента
		$suggestResult = $("<div />").addClass("suggest_result");
		$suggest.after($suggestResult);
	});

	function suggest_process() {
		if (suggestTimeout != null) {
			clearTimeout(suggestTimeout);
			suggestTimeout = null;
		}
		
		var self = $(this);
		suggestTimeout = setTimeout(function() {
			var url = self.attr('url') + '?crud_suggest[' + self.attr('name') + ']=' + self.val();
			$.ajax({ 
				url: url, 
				type: 'post',
				context: document.body,
				beforeSend: function() {
					var $loading = $("<span> загружается...</span>");
					self.after($loading);
				},
				
				success: function(html) {
					self.next().remove();
					var $result = self.next();

					if (html == '') {
						$result.hide();
		        		blinkField($result.prev());
		        		return;
					}
					
					$result.html(html);
					$result.show();
		    	}
			});
			
			
		}, 650);
			
		return;
	}
	
	var suggestTimeout = null;
	$(".element_suggest").live('keyup', suggest_process);
	//$(".element_suggest").live('click', suggest_process);

	// При клике по результатам поиска - устанавливаем значение для скрытого поля
	// И скрываем результаты поиска
	$(".suggest_item").live('click', function() {
		var $self = $(this);

		var $result = $self.parent().parent();
		var $suggest = $result.prev();
		var $hidden = $result.next();

		$suggest.val($self.text());
		$hidden.val($self.attr("rel"));
		$result.hide();
	});

	// При клике по любому месту на странице - скрываем результаты поиска
	$("body").click(function() {
		if (!$(this).hasClass('suggest_item')) {
			$(".suggest_result").hide();
		}
	});
});
</script>